package dao;

import java.util.ArrayList;

import database.Select;
import database.Update;
import demande.Demande;

import demande.divers.DemandeDivers;
import demande.livre.DemandeLivre;
import demande.livre.ISBN;
import demande.livre.Livre;

public class DemandeLivreDAO extends DAO<DemandeLivre>{

	@Override
	public boolean create(DemandeLivre obj) {
		try{
			Update u = new Update("INSERT INTO public.\"demande\" (demandeuruniv, demandeurm5,type,valide,traite) VALUES ('"+obj.demandeurUSTL +"','"+obj.demandeurM5+"','"+ Demande.TYPE_LIVRE +"','FALSE','FALSE') RETURNING iddemande AS var");
		
			int cursor = u.getCursor();
			obj.setId(cursor);
			
			System.out.println(obj.list.size());
			
			for(int i = 0; i<obj.list.size() ; i++){
				u = new Update("INSERT INTO public.\"livre\" (isbn,titre, auteur, prix, editeur, iddemande) VALUES ('"+obj.list.get(i).getISBN()+"','"+obj.list.get(i).getTitre()+"','"+obj.list.get(i).getAuteur()+"','"+obj.list.get(i).getPrix()+"','"+obj.list.get(i).getEditeur()+"','"+cursor+"')");
			}
			return true;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}

	@Override
	public boolean delete(DemandeLivre obj) {
		Update u;
		
		try{
			u = new Update("DELETE FROM public.\"livre\" WHERE \"livre\"iddemande = " + obj.getId() );
			
			u = new Update("DELETE FROM public.\"demande\" where \"demande\".iddemande =" + obj.getId());
			
			return true;
		}catch(Exception e){
			return false;
		}
		
		
	}
	
	public boolean delete(int i) {
		Update u;
		
		try{
			u = new Update("DELETE FROM public.\"livre\" WHERE \"livre\".iddemande = " + i );
			
			u = new Update("DELETE FROM public.\"demande\" where \"demande\".iddemande =" + i);
			
			return true;
		}catch(Exception e){
			return false;
		}
		
		
	}

	@Override
	public boolean update(DemandeLivre obj) {
		int id = obj.getId();
		
		try{
			Update u = new Update("UPDATE public.\"demande\" SET demandeuruniv='"+obj.demandeurUSTL+"', demandeurm5='"+obj.demandeurM5+"', valide='"+obj.valide+"',traite='"+obj.traite+"',commentaire='"+obj.commentaire+"' WHERE iddemande = "+id);
			return true;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}

	@Override
	public DemandeLivre find(int id) {
		Select s = new Select("SELECT * FROM public.\"demande\" where \"demande\".idDemande ="+ id);
		
		
		try {
			s.result.next();
			if(s.result.getInt("type") == Demande.TYPE_LIVRE){
				DemandeLivre demande =  new DemandeLivre(s.result.getInt("iddemande"), s.result.getDate("date"), s.result.getString("demandeuruniv"), s.result.getString("demandeurm5"), s.result.getBoolean("valide"), s.result.getBoolean("traite"));
				
				demande.commentaire = s.result.getString("commentaire"); 
				
				Select s1 = new Select("SELECT * FROM public.\"livre\" WHERE \"livre\".idDemande = "+id);
				ArrayList<Livre> list = new ArrayList<Livre>();
			
				try{
					while(s1.result.next()){
						list.add(new Livre(new ISBN(s1.result.getString("isbn")+""), s1.result.getString("titre"), s1.result.getString("auteur"), s1.result.getString("editeur"), s1.result.getDouble("prix")));
					}
				
				}catch(Exception e){
					return null;
				}
			
				demande.setListe(list);
				return demande;
			}
		}catch(Exception e){
			return null;
		}
		return null;
	}

}
